#include "GLCubeRenderable.h"
#include <Windows.h>
#include <gl/GL.h>


const float GLCubeRenderable::m_Vertices[72] = {1,1,1,  -1,1,1,  -1,-1,1,  1,-1,1,			// v0-v1-v2-v3
						  1,1,1,  1,-1,1,  1,-1,-1,  1,1,-1,								// v0-v3-v4-v5
						  1,1,1,  1,1,-1,  -1,1,-1,  -1,1,1,								// v0-v5-v6-v1
						  -1,1,1,  -1,1,-1,  -1,-1,-1,  -1,-1,1,							// v1-v6-v7-v2
						  -1,-1,-1,  1,-1,-1,  1,-1,1,  -1,-1,1,							// v7-v4-v3-v2
						  1,-1,-1,  -1,-1,-1,  -1,1,-1,  1,1,-1};							// v4-v7-v6-v5


const float GLCubeRenderable::m_Normals[72] = {0,0,1,  0,0,1,  0,0,1,  0,0,1,             // v0-v1-v2-v3
						 1,0,0,  1,0,0,  1,0,0, 1,0,0,              // v0-v3-v4-v5
						 0,1,0,  0,1,0,  0,1,0, 0,1,0,              // v0-v5-v6-v1
						 -1,0,0,  -1,0,0, -1,0,0,  -1,0,0,          // v1-v6-v7-v2
						 0,-1,0,  0,-1,0,  0,-1,0,  0,-1,0,         // v7-v4-v3-v2
						 0,0,-1,  0,0,-1,  0,0,-1,  0,0,-1};        // v4-v7-v6-v5

const float GLCubeRenderable::m_Colours[72] = {1,1,1,  1,1,0,  1,0,0,  1,0,1,              // v0-v1-v2-v3
						1,1,1,  1,0,1,  0,0,1,  0,1,1,              // v0-v3-v4-v5
						1,1,1,  0,1,1,  0,1,0,  1,1,0,              // v0-v5-v6-v1
						1,1,0,  0,1,0,  0,0,0,  1,0,0,              // v1-v6-v7-v2
						0,0,0,  0,0,1,  1,0,1,  1,0,0,              // v7-v4-v3-v2
						0,0,1,  0,0,0,  0,1,0,  0,1,1};             // v4-v7-v6-v5

const unsigned char GLCubeRenderable::m_Indices[24] = {0,1,2,3,
						 4,5,6,7,
						 8,9,10,11,
						 12,13,14,15,
						 16,17,18,19,
						 20,21,22,23};


GLCubeRenderable::GLCubeRenderable(void)
{
}


GLCubeRenderable::~GLCubeRenderable(void)
{
}

void GLCubeRenderable::render( const RendererInterface* renderer ) const
{
	glEnableClientState(GL_NORMAL_ARRAY);
    glEnableClientState(GL_COLOR_ARRAY);
    glEnableClientState(GL_VERTEX_ARRAY);
    glNormalPointer(GL_FLOAT, 0, m_Normals);
    glColorPointer(3, GL_FLOAT, 0, m_Colours);
    glVertexPointer(3, GL_FLOAT, 0, m_Vertices);

    glPushMatrix();
	
    glTranslatef(0, 0, -5);                // move to bottom-left
	glRotatef(45,0,1,0);

    glDrawElements(GL_QUADS, 24, GL_UNSIGNED_BYTE, m_Indices);

    glPopMatrix();

    glDisableClientState(GL_VERTEX_ARRAY);  // disable vertex arrays
    glDisableClientState(GL_COLOR_ARRAY);
    glDisableClientState(GL_NORMAL_ARRAY);
}
